package com.xxx.user.domain.document;

import lombok.Data;
import org.springframework.data.elasticsearch.annotations.DateFormat;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

import java.math.BigDecimal;
import java.util.Date;

/**
 * @author mjz
 * @since 2025/7/8
 */
@Data
@Document(indexName = "aaa_daily_station_revenue_statistics_collection")
public class ESDailyStationRevenueStatistics {

    @Field(type = FieldType.Long)
    private Long id;

    @Field(name = "tenant_id", type = FieldType.Keyword)
    private String tenantId;

    @Field(name = "create_by", type = FieldType.Keyword)
    private String createBy;

    @Field(name = "create_time", type = FieldType.Date, format = DateFormat.date_hour_minute_second, pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    @Field(name = "modify_by", type = FieldType.Keyword)
    private String modifyBy;

    @Field(name = "modify_time", type = FieldType.Date, format = DateFormat.date_hour_minute_second, pattern = "yyyy-MM-dd HH:mm:ss")
    private Date modifyTime;

    @Field(name = "data_version", type = FieldType.Integer)
    private Integer dataVersion;

    @Field(name = "app_id", type = FieldType.Keyword)
    private String appId;

    @Field(name = "station_id", type = FieldType.Keyword)
    private String stationId;

    @Field(name = "use_power", type = FieldType.Double)
    private BigDecimal usePower;

    @Field(name = "power_cash_third_amt", type = FieldType.Double)
    private BigDecimal powerCashThirdAmt;

    @Field(name = "power_cash_balance_amt", type = FieldType.Double)
    private BigDecimal powerCashBalanceAmt;

    @Field(name = "power_non_cash_present_amt", type = FieldType.Double)
    private BigDecimal powerNonCashPresentAmt;

    @Field(name = "power_non_cash_coupons_amt", type = FieldType.Double)
    private BigDecimal powerNonCashCouponsAmt;

    @Field(name = "service_cash_third_amt", type = FieldType.Double)
    private BigDecimal serviceCashThirdAmt;

    @Field(name = "service_cash_balance_amt", type = FieldType.Double)
    private BigDecimal serviceCashBalanceAmt;

    @Field(name = "service_non_cash_present_amt", type = FieldType.Double)
    private BigDecimal serviceNonCashPresentAmt;

    @Field(name = "service_non_cash_coupons_amt", type = FieldType.Double)
    private BigDecimal serviceNonCashCouponsAmt;

    @Field(name = "insurance_cash_third_amt", type = FieldType.Double)
    private BigDecimal insuranceCashThirdAmt;

    @Field(name = "insurance_cash_balance_amt", type = FieldType.Double)
    private BigDecimal insuranceCashBalanceAmt;

    @Field(name = "insurance_non_cash_present_amt", type = FieldType.Double)
    private BigDecimal insuranceNonCashPresentAmt;

    @Field(name = "insurance_non_cash_coupons_amt", type = FieldType.Double)
    private BigDecimal insuranceNonCashCouponsAmt;

    @Field(name = "original_refund_balance_amt", type = FieldType.Double)
    private BigDecimal originalRefundBalanceAmt;

    @Field(name = "original_refund_third_amt", type = FieldType.Double)
    private BigDecimal originalRefundThirdAmt;

    @Field(name = "original_refund_coupons_amt", type = FieldType.Double)
    private BigDecimal originalRefundCouponsAmt;

    @Field(name = "original_refund_present_amt", type = FieldType.Double)
    private BigDecimal originalRefundPresentAmt;

    @Field(name = "charge_package_third_pay_amount", type = FieldType.Double)
    private BigDecimal chargePackageThirdPayAmount;

    @Field(name = "charge_package_balance_pay_amount", type = FieldType.Double)
    private BigDecimal chargePackageBalancePayAmount;

    @Field(name = "charge_package_present_pay_amount", type = FieldType.Double)
    private BigDecimal chargePackagePresentPayAmount;

    @Field(name = "charge_package_coupons_pay_amount", type = FieldType.Double)
    private BigDecimal chargePackageCouponsPayAmount;

    @Field(name = "charge_package_refund_balance_amt", type = FieldType.Double)
    private BigDecimal chargePackageRefundBalanceAmt;

    @Field(name = "charge_package_refund_third_amt", type = FieldType.Double)
    private BigDecimal chargePackageRefundThirdAmt;

    @Field(name = "charge_package_refund_coupons_amt", type = FieldType.Double)
    private BigDecimal chargePackageRefundCouponsAmt;

    @Field(name = "charge_package_refund_present_amt", type = FieldType.Double)
    private BigDecimal chargePackageRefundPresentAmt;

    @Field(name = "new_person", type = FieldType.Integer)
    private Integer newPerson;

    @Field(name = "old_person", type = FieldType.Integer)
    private Integer oldPerson;

    @Field(name = "charge_count", type = FieldType.Integer)
    private Integer chargeCount;

    @Field(name = "charge_duration", type = FieldType.Double)
    private BigDecimal chargeDuration;

    @Field(name = "stat_date", type = FieldType.Date, format = DateFormat.date_hour_minute_second, pattern = "yyyy-MM-dd HH:mm:ss")
    private Date statDate;

    @Field(name = "delete_flag", type = FieldType.Integer)
    private Integer deleteFlag;

    @Field(name = "insurance_separate_third_pay_amt", type = FieldType.Double)
    private BigDecimal insuranceSeparateThirdPayAmt;

    @Field(name = "insurance_separate_third_refund_amt", type = FieldType.Double)
    private BigDecimal insuranceSeparateThirdRefundAmt;

    @Field(name = "package_use_power", type = FieldType.Double)
    private BigDecimal packageUsePower;

    @Field(name = "space_hold_third_pay_amt", type = FieldType.Double)
    private BigDecimal spaceHoldThirdPayAmt;

    @Field(name = "space_hold_balance_pay_amt", type = FieldType.Double)
    private BigDecimal spaceHoldBalancePayAmt;

    @Field(name = "space_hold_present_pay_amt", type = FieldType.Double)
    private BigDecimal spaceHoldPresentPayAmt;

    @Field(name = "space_hold_coupons_pay_amt", type = FieldType.Double)
    private BigDecimal spaceHoldCouponsPayAmt;

    @Field(name = "space_hold_third_refund_amt", type = FieldType.Double)
    private BigDecimal spaceHoldThirdRefundAmt;

    @Field(name = "space_hold_balance_refund_amt", type = FieldType.Double)
    private BigDecimal spaceHoldBalanceRefundAmt;

    @Field(name = "space_hold_present_refund_amt", type = FieldType.Double)
    private BigDecimal spaceHoldPresentRefundAmt;

    @Field(name = "space_hold_coupons_refund_amt", type = FieldType.Double)
    private BigDecimal spaceHoldCouponsRefundAmt;
}
